﻿#ifndef MAINWINDOW_H
#define MAINWINDOW_H

/*! \class MainWindow
 *  \brief     Classe do tipo \c MainWindow.
 *  \details   Esta classe gerencia os componentes gráficos gerados pelo QtDesigner.
 *  \author    Ghybson
 *  \author    Luís
 *  \author    Willian
 *  \version   0.1
 *  \date      2011
 *  \copyright GNU Public License.
 *  \todo      A classe \c Ui_MainWindow não é documentada porque ela é gerada
 *             automaticamente pelo QtCreator.
 */

#include <QtGui>
#include <QMainWindow>
#include "board.h"

namespace Ui {
    class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:

    /*! \fn  MainWindow()
     *  \brief  Construtor padrão classe \c MainWindow.
     */
    explicit MainWindow(QWidget *parent = 0);
    /*! \fn  ~MainWindow()
     *  \brief  Destrutor padrão classe \c MainWindow.
     */
    ~MainWindow();
    /*! \fn  void pause()
     *  \brief  Função membro pública da classe \c MainWindow para pausar o jogo.
     */
    void pause();
    /*! \fn  void show()
     *  \brief  Funcao execultada pelo metodo main() para as configuracoes iniciais
     */
    void show();
public slots:
    /*! \fn  void updateCaption()
     *  \brief  slot que é execultado a cada signal do \a m_Timer
     */
    void updateCaption();
    /*! \fn  void start()
     *  \brief  slot para o botao de iniciar jogo.
     */
    void start();
private:
    Ui::MainWindow *m_Ui; /*!< Ponteiro para a interface grafica */
    Board *m_Board; /*!< Variavel para um \c Board onde ocorre o jogo */
    QTimer *m_Timer; /*!< Variavel que controla o tempo em que e chamada o funcao updateCaption() */

    /*! \fn  bool eventFilter()
     *  \brief  Função que recebe os eventos do teclado.
     */
    bool eventFilter(QObject *obj, QEvent *event); /*!< */
};

#endif // MAINWINDOW_H
